Virtualization allows a host processing platform to support multiple virtual machines by abstracting the physical (e.g., hardware) platform to enable each virtual machine to operate independently from the other virtual machines executing on the processing platform. In a virtual processing environment, a hypervisor, also referred to as a virtual machine monitor (VMM), abstracts the host's physical (e.g., hardware) platform and presents an abstracted, or virtual, processing platform to each of the virtual machines. To enable independent operation of the virtual machines, such abstraction includes mapping one or more address regions in the host's physical memory to a virtual memory address space, also referred to herein as a guest physical memory address space, accessible by a guest operating system (OS) executed by a particular virtual machine. At least some virtual processing environments employ an input/output memory management unit (IOMMU) to facilitate direct memory access (DMA) operations between one or more I/O devices and the virtual memory address space that is accessible by a particular virtual machine. Such IOMMUs can provide automatic address translation between the guest physical memory addresses (e.g., virtual addresses) associated with a particular virtual machine and the actual host physical addresses (e.g., machine-level addresses, also referred to as system physical addresses) of the system memory, thereby enabling the use of DMA operations for transferring data between an I/O device and the virtual memory address space accessible by the virtual machine.
Wherever possible, the same reference numbers will be used throughout the drawing(s) and accompanying written description to refer to the same or like parts, elements, etc.